/*
桌台相关路由
*/

// 创建路由器
const express = require("express");
//引入连接池
const pool = require("../../pool");
//定义路由器
const router = express.Router();
//抛出路由器
module.exports = router;

/*
 *API:GET /tables
 *请求数据:/tables
 *对所有桌台列表进行查询
 *返回数据
 *{result 所有桌台}
 */

router.get("/", (req, res) => {
  pool.query("SELECT * FROM xfn_table", (err, result) => {
    if (err) throw err;
    res.send(result);
  });
});

/*增加桌台*/
// Api: POST /tables
// 请求参数JSON:{tname:'xxx',type:'2-3人桌',status:0}
// 含义:根据传入的桌台信息创建新的桌台
// 添加成功返回值:{code:200,msg:'1 tables add success!'}
router.post("/", (req, res) => {
  //获取到请求数据
  console.log("获取请求主体");
  console.log(req.body);
  //直接将整个JSON对象放入data
  let data = req.body;
  //根据传入的JSON对象向服务器新增数据 问号会根据JSON字符串中有的 键值对进行自动添加属性
  pool.query("INSERT INTO xfn_table SET ?", data, (err, result) => {
    if (err) throw err;
    res.send({ code: 200, msg: "1 tables add success!" });
  });
});

/*删除桌台*/
// Api: DELETE /tables/:tid
// 含义:根据传入的tid桌台编号 删除对应的桌台
// 删除成功返回值:{code:200,msg:'1 tables remove  success!'}
router.delete("/:tid", (req, res) => {
  //因为桌台id tid 和其他表有相关的外键约束牵引着
  //在删除前需要把所有属于该桌台的订单或预约信息设置为null
  // 例如我要删除3号桌 那么所有 预定桌台表中tableId=3的都改为null
  pool.query("UPDATE xfn_reservation SET tableId=null WHERE tableId=?", req.params.tid, (err, result) => {
    if (err) throw err;
    //当清空结束后继续清空所有xfn_order订单表中相关的tableId
    pool.query("UPDATE xfn_order SET tableId=null WHERE tableId=?", req.params.tid, (err, result) => {
      if (err) throw err;
      //当以上两件事情做完之后才执行删除操作
      pool.query("DELETE FROM xfn_table WHERE tid=?", req.params.tid, (err, result) => {
        if (err) throw err;
        //如果返回删除成功
        if (result.affectedRows > 0) {
          res.send({ code: 200, msg: "1 table remove success !" });
        } else {
          res.send({ code: 400, msg: "0 table delete err!" });
        }
      });
    });
  });
});

/*改*/
// Api: PUT /tables
// 请求参数JSON:{tid:xxx,tname:'xxx',type:"xxx",status:0}
// 含义:根据传入的tid修改对应的桌台信息
// 修改成功返回值:{code:200,msg:'1 table updata success !}
// 需修改的tid不存在:{code:400,msg:'0  updata not exists' }
// 修改的值并没有变化返回值:{code:401,msg:'0 No change }
router.put("/", (req, res) => {
  //接受JSON对象
  let data = req.body;
  console.log(data);
  //先验证一下用户传入的tname在服务器中是否存在 避免tname重复
  pool.query("SELECT * FROM xfn_table WHERE tname=?", data.tname, (err, result) => {
    if (err) throw err;
    //如果通过cname查询 发现有数据就说明服务器已存在相同的名称 不能重复
    if (result.length > 0) {
      res.send("tname is existence !!!");
      return;
    } else {
      //如果没问题继续执行否则return 如果有很多值需要修改也可以直接SET ? 第一个参数直接写data
      pool.query("UPDATE xfn_table SET ? WHERE tid=?", [data, data.tid], (err, result) => {
        if (err) throw err;
        //获取UPDATA 受改动的行必须大于0 才是修改成功
        if (result.changedRows > 0) {
          //正常改动成功！
          res.send({ code: 200, msg: "1 table updata success !" });
        } else if (result.affectedRows == 0) {
          //数据库中不存在要修改的CID
          res.send({ code: 400, msg: "0 table updata not exists" });
        } else if (result.affectedRows == 1 && result.changedRows == 0) {
          //改动 但值无变化
          res.send({ code: 401, msg: "0 No change" });
        }
      });
    }
  });
});

router.get("/yuyue/:tid", (req, res) => {
  //通过tid在xfn_reservation预定表中查询预定信息
  pool.query("SELECT * FROM xfn_reservation WHERE tableId=?", req.params.tid, (err, result) => {
    if (err) throw err;
    res.send(result);
  });
});

// 修改预约信息
router.get("/updateyuyue/:tid", (req, res) => {
  let obj = {
    contactName: "好啊好啊",
  };
  pool.query("UPDATE  xfn_reservation SET ?  WHERE tableId=?", [obj, req.params.tid], (err, result) => {
    if (result.changedRows > 0) {
      res.send({ code: 200, msg: "个人信息修改成功!" });
    }
  });
});

// 修改桌台状态
router.get("/updatestatus/:tid", (req, res) => {
  let statusObj = {
    status: 2,
  };
  pool.query("UPDATE  xfn_table SET ?  WHERE tid=?", [statusObj, req.params.tid], (err, result) => {
    if (err) throw err;
    if (result.changedRows > 0) {
      res.send({ code: 200, msg: "桌台状态修改成功!" });
    } else {
      res.send({ code: 200, msg: "该桌台状态已经被占用了" });
    }
  });
});

// 修改桌台的接口(post)
router.post("/updateTable", (req, res) => {
  res.send(req.body); //获取到post传递过来的参数
});

router.get("/zhanyong/:tid", (req, res) => {
  //通过tid在xfn_order表中查询 当前桌台吃饭信息
  pool.query("SELECT * FROM xfn_order WHERE tableId=?", req.params.tid, (err, result) => {
    if (err) throw err;
    res.send(result);
  });
});
